home *** CD-ROM | disk | FTP | other *** search
/ Aminet 45 / Aminet 45 (2001)(GTI - Schatztruhe)[!][Oct 2001].iso / Aminet / util / misc / ReportPlus.lha / reportplus / source / f11.c < prev    next >
Encoding:
C/C++ Source or Header  |  2001-08-20  |  11.9 KB  |  422 lines

  1. #include <exec/types.h>
  2. #include <proto/exec.h>
  3. #include <intuition/intuition.h>
  4. #include <intuition/gadgetclass.h>
  5. #include <proto/intuition.h>
  6. #include <libraries/gadtools.h>
  7. #include <proto/gadtools.h>
  8.  
  9. #define ALL_REACTION_CLASSES
  10. #define ALL_REACTION_MACROS
  11. #include <reaction/reaction.h>
  12. #include <gadgets/texteditor.h>
  13. #include <clib/texteditor_protos.h>
  14. #include <pragmas/texteditor_pragmas.h>
  15.  
  16. #include <ctype.h>
  17. #include <stdlib.h>
  18. #include <string.h>
  19. #include "rp.h"
  20.  
  21. IMPORT  struct AminetStruct aminet;
  22. AGLOBAL struct AGDBStruct   agdb;
  23.  
  24. #define GID_11_TE1 0
  25. #define GIDS_11    GID_11_TE1
  26.  
  27. // from rp.c
  28. IMPORT SBYTE                page;
  29. IMPORT struct NewGadget     Gadget;
  30. IMPORT struct Gadget       *BU99_Right,
  31.                            *BU99_TextEditor,
  32.                            *PrevGadPtr;
  33. IMPORT struct Window*       MainWindowPtr;
  34. IMPORT struct SharedStruct  shared;
  35. IMPORT ULONG                offset;
  36. IMPORT TEXT                 IOBuffer[LONGESTFIELD + 1],
  37.                             aslresult[MEDFIELD + 1],
  38.                             string[VLONGFIELD + 1];
  39. IMPORT ABOOL                fillwindows;
  40. IMPORT struct Library*      TextEditorBase;
  41.  
  42. MODULE void updateagdbgadgets(void);
  43. MODULE void readagdbgadgets(void);
  44.  
  45. MODULE struct Gadget *ST111_Title             = NULL,
  46.                      *ST111_Publisher         = NULL,
  47.                      *ST111_GameType          = NULL,
  48.                      *ST111_Players           = NULL,
  49.                      *ST111_HDInstallable     = NULL,
  50.                      *ST111_Compatibility     = NULL,
  51.                      *ST111_Submission        = NULL,
  52.                      *TE111_Review            = NULL,
  53.                      *gadgets[GIDS_11 + 1];
  54.  
  55. AGLOBAL void agdb1(void)
  56. {   verynewwindow
  57.     (   AGDBWIDTH, AGDBHEIGHT,
  58.         "Report+: Amiga Games Database (AGDB) Review Details",
  59.         BUTTONIDCMP | STRINGIDCMP
  60.     );
  61.     OnMenu(MainWindowPtr, FULLMENUNUM(MN_PROJECT, IN_NEW,    NOSUB));
  62.     OnMenu(MainWindowPtr, FULLMENUNUM(MN_PROJECT, IN_OPEN,   NOSUB));
  63.     OnMenu(MainWindowPtr, FULLMENUNUM(MN_PROJECT, IN_SAVE,   NOSUB));
  64.     OnMenu(MainWindowPtr, FULLMENUNUM(MN_PROJECT, IN_SAVEAS, NOSUB));
  65.  
  66.     /* PAGE 111 ************************************************************/
  67.  
  68.     if (!(gadgets[GID_11_TE1] = (struct Gadget *) NewObject
  69.     (   TEXTEDITOR_GetClass(),    NULL,
  70.         GA_ID,                    GID_11_TE1,
  71.         GA_Left,                   10,
  72.         GA_Top,                   130,
  73.         GA_Width,                 AGDBWIDTH - 20,
  74.         GA_Height,                100,
  75.         GA_RelVerify,             TRUE,
  76.         GA_TEXTEDITOR_ExportWrap,  75,
  77.         TAG_END
  78.     )))
  79.     {   rq("Can't create ReAction gadgets!");
  80.     }
  81.     SetGadgetAttrs
  82.     (   gadgets[GID_11_TE1],    MainWindowPtr, NULL,
  83.         GA_TEXTEDITOR_Contents, aminet.textfield
  84.     ); // long description
  85.  
  86.     AddGList(MainWindowPtr, gadgets[GID_11_TE1], -1, -1, NULL);
  87.     RefreshGList(gadgets[GID_11_TE1], MainWindowPtr, NULL, -1);
  88.  
  89.     setgadget(10, 130, AGDBWIDTH - 20, 1, "_Review:", PLACETEXT_ABOVE);
  90.     TE111_Review = PrevGadPtr = (struct Gadget *) CreateGadget
  91.     (   TEXT_KIND,
  92.         PrevGadPtr,
  93.         &Gadget,
  94.         GT_Underscore, '_',
  95.         TAG_DONE
  96.     );
  97.  
  98.     setgadget(168, 24, 330, 12, "_Title:", NULL);
  99.     ST111_Title = PrevGadPtr = (struct Gadget *) CreateGadget
  100.     (   STRING_KIND,
  101.         PrevGadPtr,
  102.         &Gadget,
  103.         GTST_String,   &(agdb.title),
  104.         GTST_MaxChars, 40,
  105.         GA_TabCycle,   TRUE,
  106.         GA_Immediate,  TRUE,
  107.         GT_Underscore, '_',
  108.         TAG_DONE
  109.     );
  110.  
  111.     setgadget(168, 36, 330, 12, "_Publisher (Year):", NULL);
  112.     ST111_Publisher = PrevGadPtr = (struct Gadget *) CreateGadget
  113.     (   STRING_KIND,
  114.         PrevGadPtr,
  115.         &Gadget,
  116.         GTST_String, &(agdb.publisher),
  117.         GTST_MaxChars, 40,
  118.         GA_TabCycle, TRUE,
  119.         GA_Immediate, TRUE,
  120.         GT_Underscore, '_',
  121.         TAG_DONE
  122.     );
  123.  
  124.     setgadget(168, 48, 330, 12, "_Game Type:", NULL);
  125.     ST111_GameType = PrevGadPtr = (struct Gadget *) CreateGadget
  126.     (   STRING_KIND,
  127.         PrevGadPtr,
  128.         &Gadget,
  129.         GTST_String, &(agdb.gametype),
  130.         GTST_MaxChars, 40,
  131.         GA_TabCycle, TRUE,
  132.         GA_Immediate, TRUE,
  133.         GT_Underscore, '_',
  134.         TAG_DONE
  135.     );
  136.  
  137.     setgadget(168, 60, 330, 12, "P_layers:", NULL);
  138.     ST111_Players = PrevGadPtr = (struct Gadget *) CreateGadget
  139.     (   STRING_KIND,
  140.     PrevGadPtr,
  141.     &Gadget,
  142.         GTST_String, &(agdb.players),
  143.     GTST_MaxChars, 40,
  144.     GA_TabCycle, TRUE,
  145.     GA_Immediate, TRUE,
  146.         GT_Underscore, '_',
  147.     TAG_DONE
  148.     );
  149.  
  150.     setgadget(168, 72, 330, 12, "_HD Installable?", NULL);
  151.     ST111_HDInstallable = PrevGadPtr = (struct Gadget *) CreateGadget
  152.     (   STRING_KIND,
  153.     PrevGadPtr,
  154.     &Gadget,
  155.         GTST_String, &(agdb.hdinstallable),
  156.     GTST_MaxChars, 40,
  157.     GA_TabCycle, TRUE,
  158.     GA_Immediate, TRUE,
  159.         GT_Underscore, '_',
  160.     TAG_DONE
  161.     );
  162.  
  163.     setgadget(168, 84, 330, 12, "_Compatibility:", NULL);
  164.     ST111_Compatibility = PrevGadPtr = (struct Gadget *) CreateGadget
  165.     (    STRING_KIND,
  166.     PrevGadPtr,
  167.     &Gadget,
  168.         GTST_String, &(agdb.compatibility),
  169.     GTST_MaxChars, 40,
  170.     GA_TabCycle, TRUE,
  171.     GA_Immediate, TRUE,
  172.         GT_Underscore, '_',
  173.     TAG_DONE
  174.     );
  175.  
  176.     if ((!(aminet.uploader[0])) && readin("S:Report.sender"))
  177.     {   /* # Refer: <last>,<first> (<company> ,phone <phone>)<LF>
  178.            # Path: <email><LF>
  179.            # ReferID: <developer><LF> */
  180.  
  181.         offset = 0;
  182.         parse("# Refer: ");
  183.         parse(",");
  184.         parse(" (");
  185.         parse(" ,phone ");
  186.         parse(")\n# Path: ");
  187.         parse("\n# ReferID: ");
  188.         strcpy(aminet.uploader, string);
  189.     }
  190.  
  191.     setgadget(168, 96, 330, 12, "_Submission:", NULL);
  192.     ST111_Submission = PrevGadPtr = (struct Gadget *) CreateGadget
  193.     (   STRING_KIND,
  194.         PrevGadPtr,
  195.         &Gadget,
  196.         GTST_String, &(aminet.uploader),
  197.         GTST_MaxChars, 40,
  198.         GA_TabCycle, TRUE,
  199.         GA_Immediate, TRUE,
  200.         GT_Underscore, '_',
  201.         TAG_DONE
  202.     );
  203.  
  204.     drawgadgets((UWORD) ~0);
  205.     ActivateGadget(ST111_Title, MainWindowPtr, NULL);
  206.     loop();
  207.     readagdbgadgets();
  208.     closewindow();
  209. }
  210.  
  211. AGLOBAL void saveagdb(ABOOL saveas)
  212. {   /*  Title            <title>
  213.         Publisher        <publisher>
  214.         Game Type        <game type>
  215.         Players          <players>
  216.         HD Installable   <hd installable>
  217.         Compatibility    <compatibility>
  218.         Submission       <uploader>
  219.         
  220.         Review
  221.         <review> */
  222.  
  223.     readagdbgadgets();
  224.  
  225.     strcpy(IOBuffer, "Title:           ");
  226.     strcat(IOBuffer, agdb.title);
  227.     strcat(IOBuffer, "\nPublisher:       ");
  228.     strcat(IOBuffer, agdb.publisher);
  229.     strcat(IOBuffer, "\nGame Type:       ");
  230.     strcat(IOBuffer, agdb.gametype);
  231.     strcat(IOBuffer, "\nPlayers:         ");
  232.     strcat(IOBuffer, agdb.players);
  233.     strcat(IOBuffer, "\nHD Installable:  ");
  234.     strcat(IOBuffer, agdb.hdinstallable);
  235.     strcat(IOBuffer, "\nCompatibility:   ");
  236.     strcat(IOBuffer, agdb.compatibility);
  237.     strcat(IOBuffer, "\nSubmission:      ");
  238.     strcat(IOBuffer, aminet.uploader);
  239.     strcat(IOBuffer, "\n\nReview:\n");
  240.     strcat(IOBuffer, agdb.textfield);
  241.  
  242.     if (!agdb.output[0] || saveas) // if we need a filename
  243.     {   if (saveasl("Save AGDB Review"))
  244.         {   strcpy(agdb.output, aslresult);
  245.             writeout(agdb.output);
  246. }   }   }
  247.  
  248. AGLOBAL void agdb_loop(ULONG class, struct Gadget* addr, UWORD code)
  249. {   if (class == IDCMP_GADGETUP)
  250.     {   if (addr == BU99_Right)
  251.         {   page = 0;
  252.         } elif (addr == BU99_TextEditor)
  253.         {   launcheditor(agdb.output);
  254.     }   }
  255.     elif (class == IDCMP_VANILLAKEY)
  256.     {   code = toupper(code);
  257.         if (code == ESCAPE)
  258.         {   page = 0;
  259.         } elif (code == 'T')
  260.         {   ActivateGadget(ST111_Title,         MainWindowPtr, NULL);
  261.         } elif (code == 'P')
  262.         {   ActivateGadget(ST111_Publisher,     MainWindowPtr, NULL);
  263.         } elif (code == 'G')
  264.         {   ActivateGadget(ST111_GameType,      MainWindowPtr, NULL);
  265.         } elif (code == 'L')
  266.         {   ActivateGadget(ST111_Players,       MainWindowPtr, NULL);
  267.         } elif (code == 'H')
  268.         {   ActivateGadget(ST111_HDInstallable, MainWindowPtr, NULL);
  269.         } elif (code == 'C')
  270.         {   ActivateGadget(ST111_Compatibility, MainWindowPtr, NULL);
  271.         } elif (code == 'S')
  272.         {   ActivateGadget(ST111_Submission,    MainWindowPtr, NULL);
  273.         } elif (code == 'R')
  274.         {   ActivateGadget(gadgets[GID_11_TE1], MainWindowPtr, NULL);
  275.         }
  276. }   }
  277.  
  278. AGLOBAL void newagdb(ABOOL display)
  279. {   strcpy(agdb.title,         "");
  280.     strcpy(agdb.publisher,     "");
  281.     strcpy(agdb.gametype,      "");
  282.     strcpy(agdb.players,       "");
  283.     strcpy(agdb.hdinstallable, "");
  284.     strcpy(agdb.compatibility, "");
  285.     strcpy(aminet.uploader,    "");
  286.     strcpy(agdb.output,        "");
  287.     strcpy(agdb.textfield,     "");
  288.     agdb.loaded = FALSE;
  289.  
  290.     if (display)
  291.         updateagdbgadgets();
  292. }
  293.  
  294. AGLOBAL void openagdb(void)
  295. {   if (asl())
  296.     {   strcpy(agdb.output, aslresult);
  297.         loadagdb();
  298.         updateagdbgadgets();
  299. }   }
  300.  
  301. AGLOBAL void loadagdb(void)
  302. {   if (readin(agdb.output))
  303.     {   agdb.loaded = TRUE;
  304.         offset = 0;
  305.  
  306.         parse("Title:           ");
  307.         parse("\nPublisher:       ");
  308.         strcpy(agdb.title,         string);
  309.         parse("\nGame Type:       ");
  310.         strcpy(agdb.publisher,     string);
  311.         parse("\nPlayers:         ");
  312.         strcpy(agdb.gametype,      string);
  313.         parse("\nHD Installable:  ");
  314.         strcpy(agdb.players,       string);
  315.         parse("\nCompatibility:   ");
  316.         strcpy(agdb.hdinstallable, string);
  317.         parse("\nSubmission:      ");
  318.         strcpy(agdb.compatibility, string);
  319.         parse("\n\nReview:\n");
  320.         strcpy(aminet.uploader,    string);
  321.         parsetoend();
  322.         strcpy(agdb.textfield,     string);
  323.  
  324.         updateagdbgadgets();
  325. }   }
  326.  
  327. MODULE void updateagdbgadgets(void)
  328. {   GT_SetGadgetAttrs
  329.     (   ST111_Title,
  330.         MainWindowPtr,
  331.         NULL,
  332.         GTST_String, agdb.title,
  333.         TAG_DONE
  334.     );
  335.     GT_SetGadgetAttrs
  336.     (   ST111_Publisher,
  337.         MainWindowPtr,
  338.         NULL,
  339.         GTST_String, agdb.publisher,
  340.         TAG_DONE
  341.     );
  342.     GT_SetGadgetAttrs
  343.     (   ST111_GameType,
  344.         MainWindowPtr,
  345.         NULL,
  346.         GTST_String, agdb.gametype,
  347.         TAG_DONE
  348.     );
  349.     GT_SetGadgetAttrs
  350.     (   ST111_Players,
  351.         MainWindowPtr,
  352.         NULL,
  353.         GTST_String, agdb.players,
  354.         TAG_DONE
  355.     );
  356.     GT_SetGadgetAttrs
  357.     (   ST111_HDInstallable,
  358.         MainWindowPtr,
  359.         NULL,
  360.         GTST_String, agdb.hdinstallable,
  361.         TAG_DONE
  362.     );
  363.     GT_SetGadgetAttrs
  364.     (   ST111_Compatibility,
  365.         MainWindowPtr,
  366.         NULL,
  367.         GTST_String, agdb.compatibility,
  368.         TAG_DONE
  369.     );
  370.     GT_SetGadgetAttrs
  371.     (   ST111_Submission,
  372.         MainWindowPtr,
  373.         NULL,
  374.         GTST_String, aminet.uploader,
  375.         TAG_DONE
  376.     );
  377.  
  378.     SetGadgetAttrs
  379.     (   gadgets[GID_11_TE1], MainWindowPtr, NULL,
  380.         GA_TEXTEDITOR_Contents, aminet.textfield,
  381.         TAG_DONE
  382.     );
  383. }
  384.  
  385. MODULE void readagdbgadgets(void)
  386. {   STRPTR textBuffer;
  387.  
  388.     strcpy
  389.     (   agdb.title,
  390.         ((struct StringInfo *) ST111_Title->SpecialInfo)->Buffer
  391.     );
  392.     strcpy
  393.     (   agdb.publisher,
  394.         ((struct StringInfo *) ST111_Publisher->SpecialInfo)->Buffer
  395.     );
  396.     strcpy
  397.     (   agdb.gametype,
  398.         ((struct StringInfo *) ST111_GameType->SpecialInfo)->Buffer
  399.     );
  400.     strcpy
  401.     (   agdb.players,
  402.         ((struct StringInfo *) ST111_Players->SpecialInfo)->Buffer
  403.     );
  404.     strcpy
  405.     (   agdb.hdinstallable,
  406.         ((struct StringInfo *) ST111_HDInstallable->SpecialInfo)->Buffer
  407.     );
  408.     strcpy
  409.     (   agdb.compatibility,
  410.         ((struct StringInfo *) ST111_Compatibility->SpecialInfo)->Buffer
  411.     );
  412.     strcpy
  413.     (   aminet.uploader,
  414.         ((struct StringInfo *) ST111_Submission->SpecialInfo)->Buffer
  415.     );
  416.  
  417.     textBuffer = (STRPTR) DoGadgetMethod(gadgets[GID_11_TE1], MainWindowPtr, NULL, GM_TEXTEDITOR_ExportText, NULL);
  418.     strcpy(agdb.textfield, textBuffer); // long description
  419.     FreeVec((APTR) textBuffer);
  420.     // textBuffer = NULL;
  421. }
  422.